Why We Are Choosing Go?

Riandy Rahman Nugraha
Haraj Tech
Published in
4 min readSep 21, 2022

--

Gopher in love

In Haraj we decided to use Go as our primary language to build backend services since ~2 years ago.

A lot of people assumes that we are choosing Go due to its performance, it’s popularity, or even solely due to its being backed by Google. But heck, we actually don’t even care much about all of that in the beginning! 😂

So in this article, I would like to clarify why we decided to make Go as our primary language for backend development in the first place.

TL;DR Because its simplicity makes our team more productive.

A Bit About Haraj

Haraj banners in Riyadh Season 2021

Haraj started out as personal project by our founder in 2007.

His strategy was to create platform that loved by people & build stable business around it. So since the very beginning, engineering excellence was never become our priority. Our priority is to ensure our user happiness by creating & maintaining necessary features for them.

Each of these features was assigned to specific engineers. The problem is there was no established standards on how the engineers should develop the features. So they could use whatever technologies they preferred to build the features.

So can you imagine the situation where one feature is built using PHP + MySQL while other feature is built using NodeJS + PostgreSQL just simply because the engineer preferred the technologies instead out of necessity? Quite chaotic to maintain, right? 😂

Another problem is each of our engineers mostly treated their assigned features just like their own personal project. So they didn’t care whether other people could read or maintain their code or not. As long as it was working, they consider the job was done. 🤣

Oh I forgot to mention that there was mostly no documentation for each of these projects too. 🤣

For years, this work model was okay since our team is small & most of our engineers decided to stay long with us. However when they decided to leave, it was such a big disaster for us! 😅

This was why in the middle of 2020 we decided to create development standards. All of our projects must adhere to these standards so they could be passed down easily to anyone in the team.

Whenever we use new technology or tools, it must be out of necessity instead just because our engineer prefer it, including the programming language that being used by our engineer for development.

So Why Go?

Over several years of backend development, we have used various programming languages such as PHP, Javascript, Python, Go, & Typescript to build various services in our backend.

All of these programming languages have their own pros & cons. However there is one programming language that particularly astonished us due to its big impact on our team productivity: Go.

Courtesy of https://gophersource.com/

Go is a programming language that is stupidly simple & opinionated. It’s like using a framework but instead on the library level, it is the language itself. So it is quite easy to find out how to do things in Go, because mostly the way is already defined & there is only one way to do it.

This clarity & simplicity is really what make it easy for people to get started with Go. Even one of our senior engineers managed to get his contribution accepted to open source project written in Go in just ~1 month since he learned the Go language itself. Pretty amazing, right?

After that, we decided to assigned one of our junior engineers to work using Go too. And you know what? The result was pretty amazing! This guy now could even review the Go codebase written by his senior. Even he could point out some of the mistakes that his senior created. Pretty amazing, right?

This was why when we created the development standard for backend, we decided to make Go as our main programming language. The reason is simply because it makes our backend team more productive & lively:

  • Projects that usually take 6–12 months to complete, now could be done in just only 1–1.5 months.
  • Previously we have no code review, because the only person understood the code is the author him/herself. But now since everyone could understand the code, everyone could participate in reviewing the code, even the junior engineers.
  • Since everyone could participate in the code review, it encourages everyone in the team to become more open in sharing & discussing their ideas with others. This lead to many breakthrough in our backend engineering. 😃
  • Previously we don’t create automated testing for our application, but now we do since it is very easy to create automated testing in Go.
  • Ease of mental burden to our engineers because they know when they are writing application, it is not only him/her that could maintain the application but also the whole team. 😁
  • Since our work become more productive, we got more time to play & explore tons of new things! 😁

So yeah these are the main reason why we are choosing Go for backend development even until now! 😁

--

--

Riandy Rahman Nugraha
Haraj Tech

Love to learn something new. Insight hunter. Engineering Manager @haraj.